home *** CD-ROM | disk | FTP | other *** search
/ Destination: Castle / Destination: Castle.iso / setup.ms_ / setup.ms
Text File  |  1994-10-26  |  7KB  |  286 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3.  
  4. ''DIALOG ID's
  5. CONST WELCOME                    = 100
  6. CONST ASKQUIT                    = 200
  7. CONST DESTPATH                   = 300
  8. CONST EXITFAILURE                = 400
  9. CONST EXITQUIT                   = 600
  10. CONST EXITSUCCESS                = 700
  11. CONST VERIFYWINPATH              = 2400
  12. CONST ERROR_UNEXPECTED           = 2200
  13. CONST NOT_INSTALLED              = 3100
  14.  
  15. ''OTHER CONSTANTS
  16. CONST LOGO                       = 1
  17. CONST MB_YESNO                   = 4
  18. CONST MB_ICONINFORMATION         = 64
  19. CONST IDYES                      = 6
  20. CONST IDNO                       = 7
  21.  
  22. GLOBAL THEMENAME$
  23. GLOBAL THEMEDIR$
  24. THEMENAME$ = "Castle"
  25. THEMEDIR$ = "CASTLE"
  26.  
  27. GLOBAL DESTWIN$         ''Windows directory
  28. GLOBAL DESTWINSYS$      ''Windows\System directory
  29. GLOBAL DESTDINER$       ''Diner directory
  30.  
  31. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  32.  
  33. INIT:
  34.    CUIDLL$ = "MSCUISTF.DLL"
  35.    ExitCode% = 0
  36.    ON ERROR GOTO ERRORTRAP
  37.  
  38.    SrcDir$ = GetSymbolValue ("STF_SRCDIR")
  39.    DESTWIN$ = GetWindowsDir()
  40.  
  41.    SetBitmap CUIDLL$, LOGO
  42.    SetTitle "Imagination Express Setup"
  43.  
  44.    szInf$ = GetSymbolValue ("STF_SRCINFPATH")
  45.    IF szInf$ = "" THEN
  46.       szInf$ = GetSymbolValue ("STF_CWDDIR") + "setup.inf"
  47.    ENDIF
  48.    ReadInfFile szInf$
  49.  
  50. WELCOME:
  51.  
  52.    sz$ = UIStartDlg (CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
  53.  
  54.    IF sz$ <> "CONTINUE" THEN
  55.       GOSUB ASKQUIT
  56.       GOTO WELCOME
  57.    ENDIF
  58.  
  59.    UIPop 1     '' destroy dialog on top of stack
  60.  
  61.    IF ExitCode% <> 0 THEN
  62.       GOTO EXITFAIL
  63.    ENDIF
  64.  
  65. VERIFYWINPATH:
  66.    '' Verify that setup has found the correct \windows directory
  67.    DESTWIN$ = GetWindowsDir()
  68.    SetSymbolValue "EditTextIn", DESTWIN$
  69.    SetSymbolValue "EditFocus", "END"
  70.    sz$ = UIStartDlg (CUIDLL$, VERIFYWINPATH, "FEditDlgProc", 0, "")
  71.    IF sz$ = "REACTIVATE" THEN
  72.       GOTO VERIFYWINPATH
  73.    ELSEIF SZ$ = "EXIT" THEN
  74.       GOSUB ASKQUIT
  75.       GOTO VERIFYWINPATH
  76.    ENDIF
  77.    sz$ = GetSymbolValue ("EditTextOut")
  78.    IF sz$ <> DESTWIN$ THEN
  79.  
  80.       '' make sure user ended path with a '\'
  81.       '' if not, help 'em out
  82.       DESTWIN$ = sz$
  83.       DESTWIN$ = LTRIM$(RTRIM$ (DESTWIN$))
  84.       IF INSTR (LEN (DESTWIN$) - 1, DESTWIN$, "\") = 0 THEN
  85.          DESTWIN$ = DESTWIN$ + "\"
  86.       ENDIF
  87.       '' make sure path has a drive letter and drive letter is valid
  88.       sz$ = MID$ (DESTWIN$, 2, 1)
  89.       IF sz$ <> ":" THEN
  90.          i% = DoMsgBox ("You must specify a valid drive letter in the path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
  91.          GOTO VERIFYWINPATH
  92.       ENDIF
  93.       sz$ = MID$ (DESTWIN$, 1, 1)
  94.       IF IsDriveValid (sz$) = 0 THEN
  95.          i% = DoMsgBox ("You must specify a valid drive letter in the path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
  96.          GOTO VERIFYWINPATH
  97.       ENDIF
  98.       '' make sure path is valid (i.e. it exists)
  99.       IF DoesDirExist (DESTWIN$) = 0 THEN
  100.          i% = DoMsgBox (DESTWIN$ + " is not a valid path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
  101.          GOTO VERIFYWINPATH
  102.       ENDIF
  103.  
  104.    ENDIF
  105.  
  106.    UIPop 1
  107.  
  108.    DESTWINSYS$ = DESTWIN$
  109.    IF INSTR (LEN (DESTWINSYS$) - 1, DESTWINSYS$, "\") = 0 THEN
  110.       DESTWINSYS$ = DESTWINSYS$ + "\"
  111.    ENDIF
  112.    DESTWINSYS$ = DESTWINSYS$ + "SYSTEM"
  113.  
  114.  
  115. GETDINERPATH:
  116.    INISTR$ = DESTWIN$ + "IMAGINE.INI"
  117.    IF DoesFileExist (INISTR$, femExists) = 1 THEN
  118.       DESTDINER$ = GetIniKeyString (INISTR$, "General", "Root")
  119.       IF DESTDINER$ = "" THEN
  120.          GOTO ERROR_NOT_INSTALLED
  121.       ENDIF
  122.       EXESTR$ = MakePath (DESTDINER$, "IMAGINE.EXE")
  123.       IF DoesFileExist (EXESTR$, femExists) = 0 THEN
  124.          GOTO ERROR_NOT_INSTALLED
  125.       ENDIF
  126.    ELSE
  127.       GOTO ERROR_NOT_INSTALLED
  128.    ENDIF
  129.  
  130. INITCOPYLIST:
  131.  
  132.    ClearCopyList
  133.    AddSectionFilesToCopyList THEMENAME$, SrcDir$, MAKEPATH (DESTDINER$, "THEMES\" + THEMEDIR$ + "\")
  134.    sizereq& = GetCopyListCost ("", "NeededSpace", "")
  135.  
  136. CHECKSPACE:
  137.    IF sizereq& <> 0 THEN
  138.       DRIVELETTER$ = MID$ (DESTDINER$, 1, 1)
  139.       COST$ = GetListItem ("NeededSpace", ASC(LCASE$ (DESTDINER$)) - ASC("a") + 1)
  140.       MESSAGE$ = "Not enough free space on drive " + DRIVELETTER$ + ":.  Setup needs " + COST$
  141.       MESSAGE$ = " bytes free to install the " + THEMENAME$ + " Theme Pack.  Please free up some space and run Setup again."
  142.       i% = DoMsgBox (MESSAGE$, "Imagination Express Setup", MB_ICONHAND + MB_OK)
  143.       GOTO SEEYA
  144.    ENDIF
  145.  
  146. COPYFILES:
  147.    SrcDir$ = GetSymbolValue ("STF_SRCDIR")
  148.    CreateDir MakePath (DESTDINER$, "Themes\" + THEMEDIR$ + "\"), cmoVital
  149.    ERR = 0
  150.  
  151.    '' copy the files
  152.    CopyFilesInCopyList
  153.  
  154.    CreateIniKeyValue MakePath (DESTWIN$, "Imagine.INI"), "Themepack List", THEMENAME$, "Themes\" + THEMEDIR$ + "\", cmoOverwrite
  155.  
  156.    '' check for copy errors
  157.    IF ERR <> 0 THEN
  158.       GOTO ERR_UNEXPECTED
  159.    ENDIF
  160.  
  161. SUCCESS:
  162.    '' indicate success to the user and restart windows if necessary
  163.    sz$ = UIStartDlg (CUIDLL$, EXITSUCCESS, "FInfoDlgProc", 0, "")
  164.    IF sz$ = "REACTIVATE" THEN
  165.       GOTO SUCCESS
  166.    ENDIF
  167.    UIPop 1
  168.    GOTO SEEYA
  169.  
  170. ASKQUIT:
  171.    sz$ = UIStartDlg (CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  172.  
  173.    IF sz$ = "EXIT" THEN
  174.       UIPop 1
  175.       GOTO QUIT
  176.    ELSEIF sz$ = "REACTIVATE" THEN
  177.       GOTO ASKQUIT
  178.    ELSE
  179.       UIPop 1                 '' remove quit dialog and go back to previous dialog
  180.    ENDIF
  181.  
  182.    RETURN
  183.  
  184. QUIT:
  185.    sz$=  UIStartDlg (CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  186.    IF sz$ = "REACTIVATE" THEN
  187.       GOTO QUIT
  188.    ENDIF
  189.    UIPopALL
  190.    GOTO SEEYA
  191.  
  192. ERR_UNEXPECTED:
  193.    sz$ = UIStartDlg (CUIDLL$, ERROR_UNEXPECTED, "FInfoDlgProc", 0, "")
  194.    IF sz$ = "REACTIVATE" THEN
  195.       GOTO ERR_UNEXPECTED
  196.    ENDIF
  197.    UIPop 1
  198.    GOTO FAILURE
  199.  
  200. EXITFAIL:
  201.    sz$ = UIStartDlg (CUIDLL$, ExitCode%, "FInfoDlgProc", 0, "")
  202.    IF sz$ = "REACTIVATE" THEN
  203.       GOTO EXITFAIL
  204.    ENDIF
  205.    UIPop 1
  206.    GOTO FAILURE
  207.  
  208. FAILURE:
  209.    sz$ = UIStartDlg (CUIDLL$, EXITFAILURE, "FInfoDlgProc", 0, "")
  210.    IF sz$ = "REACTIVATE" THEN
  211.       GOTO FAILURE
  212.    ENDIF
  213.    UIPopAll
  214.    GOTO SEEYA
  215.  
  216.  
  217. ERRORTRAP:
  218.    IF ERR = STFQUIT THEN
  219.       GOTO QUIT
  220.    ENDIF
  221.  
  222.    RESUME NEXT
  223.  
  224. ERROR_NOT_INSTALLED:
  225.    sz$ = UIStartDlg (CUIDLL$, NOT_INSTALLED, "FInfoDlgProc", 0, "")
  226.    IF sz$ = "REACTIVATE" THEN
  227.       GOTO ERROR_NOT_INSTALLED
  228.    ENDIF
  229.    UIPopAll
  230.    GOTO SEEYA
  231.  
  232. SEEYA:
  233.    UIPopAll
  234.    END
  235.  
  236.  
  237.  
  238. '' FROM HERE ON ARE FUNCTIONS IN THE ORIGINAL WING.MST FILE THAT THE WING SETUP USES
  239.  
  240. '**
  241. '** Purpose:
  242. '**     Appends a file name to the end of a directory path,
  243. '**     inserting a backslash character as needed.
  244. '** Arguments:
  245. '**     szDir$  - full directory path (with optional ending "\")
  246. '**     szFile$ - filename to append to directory
  247. '** Returns:
  248. '**     Resulting fully qualified path name.
  249. '*************************************************************************
  250. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  251.     IF szDir$ = "" THEN
  252.    MakePath = szFile$
  253.     ELSEIF szFile$ = "" THEN
  254.    MakePath = szDir$
  255.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  256.    MakePath = szDir$ + szFile$
  257.     ELSE
  258.    MakePath = szDir$ + "\" + szFile$
  259.     END IF
  260. END FUNCTION
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.